package cn.tedu.csmall.product.mapper;

import cn.tedu.csmall.product.pojo.entity.Album;
import cn.tedu.csmall.product.pojo.vo.AlbumListItemVO;
import cn.tedu.csmall.product.pojo.vo.AlbumStandardVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 处理相册数据的Mapper接口
 *
 * @author Angelina
 * @version 0.0.1
 */
@Repository
public interface AlbumMapper {
    /**
     * 插入相册数据
     *
     * @param album 相册数据
     * @return 影响的行数
     */
    int insert(Album album);

    /**
     * 批量插入相册数据
     *
     * @param albumList 插入相册的数据集合
     * @return 影响的行数
     */
    int insertBatch(List<Album> albumList);

    /**
     * 删除相册数据
     *
     * @param id 数据id
     * @return 影响的行数
     */
    int deleteById(long id);

    /**
     * 批量删除数据
     *
     * @param ids 数据id
     * @return 影响的行数
     */
    int deleteByIds(Long[] ids);

    /**
     * 修改相册数据
     *
     * @param album 修改的参数
     * @return受影响的行数
     */
    int update(Album album);

    /**
     * 查询相册总数
     *
     * @return 相册总数
     */
    int select();

    /**
     * 查询相册详情
     *
     * @param id 查询相册的id
     * @return 查询的相册详情
     */
    AlbumStandardVO getStandardById(Long id);

    /**
     * 查询相册数据列表
     *
     * @return 相册数据列表
     */
    List<AlbumListItemVO> seletListItem();

    /**
     * 根据相册名称统计数据数量
     *
     * @param name 相册名称
     * @return 匹配相册名称的数据数量
     */
    int countByName(String name);

    /**
     * 根据该相册名是否被重复使用
     *
     * @param name 相册名
     * @param id   相册id
     * @return 除此id的相册外其他相同名字的像册数
     */
    int countByNameAndNotId(@Param("name") String name, @Param("id") Long id);


}
